package com.eduplatform.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.eduplatform.dto.ExamAnswerDTO;
import com.eduplatform.entity.ExamAnswer;

import java.util.List;

/**
 * 考试答题记录服务接口
 */
public interface ExamAnswerService extends IService<ExamAnswer> {

    /**
     * 分页查询考试答题记录
     *
     * @param page        页码
     * @param size        每页大小
     * @param examPaperId 考试答卷ID
     * @param questionId  题目ID
     * @param status      批改状态
     * @return 分页结果
     */
    Page<ExamAnswerDTO> pageExamAnswers(Integer page, Integer size, Long examPaperId, Long questionId, Integer status);

    /**
     * 获取考试答题记录详情
     *
     * @param id 考试答题记录ID
     * @return 考试答题记录详情
     */
    ExamAnswerDTO getExamAnswerDetail(Long id);

    /**
     * 根据考试答卷ID获取所有答题记录
     *
     * @param examPaperId 考试答卷ID
     * @return 答题记录列表
     */
    List<ExamAnswerDTO> getExamAnswersByPaperId(Long examPaperId);

    /**
     * 批量保存考试答题记录
     *
     * @param examAnswers 考试答题记录列表
     * @return 是否保存成功
     */
    boolean batchSaveExamAnswers(List<ExamAnswer> examAnswers);

    /**
     * 批改考试答题记录
     *
     * @param id       考试答题记录ID
     * @param score    得分
     * @param comment  评语
     * @param graderId 批改人ID
     * @return 是否批改成功
     */
    boolean gradeExamAnswer(Long id, Integer score, String comment, Long graderId);
}